package com.csii.autocode.window;

import com.csii.autocode.entity.MainTableVo;
import com.csii.autocode.entity.SubTableVo;
import com.csii.autocode.service.impl.CodeGenerateOneToMany;
import com.csii.autocode.utils.ReadFile;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.ArrayList;
import java.util.List;

public class OneToManyUtil {
    private static final Logger logger = LoggerFactory.getLogger(OneToManyUtil.class);

    public static void main(String[] args) {
        //第一步：设置主表配置
        MainTableVo mainTable = new MainTableVo();
        mainTable.setTableName("course");//表名
        mainTable.setEntityName("Course");     //实体名
        mainTable.setEntityPackage("djw");     //包名
        mainTable.setFtlDescription("课程表");     //描述

        //第二步：设置子表集合配置
        List<SubTableVo> subTables = new ArrayList<>();
        //[1].子表一
        SubTableVo po = new SubTableVo();
        po.setTableName("student");//表名
        po.setEntityName("Student");        //实体名
        po.setEntityPackage("djw");            //包名
        po.setFtlDescription("学生信息表");       //描述
        //子表外键参数配置
        /*说明:
         * a) 子表引用主表主键ID作为外键，外键字段必须以_ID结尾;
         * b) 主表和子表的外键字段名字，必须相同（除主键ID外）;
         * c) 多个外键字段，采用逗号分隔;
         */
        po.setForeignKeys(new String[]{"course_id"});
        subTables.add(po);
        //[2].子表二
        /*SubTableVo po2 = new SubTableVo();
        po2.setTableName("order_ticket");        //表名
        po2.setEntityName("GuiTestOrderTicket");            //实体名
        po2.setEntityPackage("gui");                //包名
        po2.setFtlDescription("产品明细");            //描述
        //子表外键参数配置
        *//*说明:
         * a) 子表引用主表主键ID作为外键，外键字段必须以_ID结尾;
         * b) 主表和子表的外键字段名字，必须相同（除主键ID外）;
         * c) 多个外键字段，采用逗号分隔;
         *//*
		po2.setForeignKeys(new String[]{"order_id"});
		subTables.add(po2);
		mainTable.setSubTables(subTables);*/

        try {
            (new CodeGenerateOneToMany(mainTable, subTables)).generateCodeFile(null);
        } catch (Exception exception) {
            logger.error(exception.getMessage());
        }
    }
}
